<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        //1.将函数作为另一个函数的返回值
        function fn1()
        {
            var a=2;
            function fn2()
            {
                a++;
                console.log("fn2()函数执行后的值"+a);
            }
            return fn2;
        }
        var f=fn1();
        console.log(f());//3
        console.log(f());//4

        var g=fn1();
        console.log(g());//3
        console.log(g());//4
        //f和g的执行不会产生闭包，闭包的产生取决于原外部函数执行几次

        //2.将函数作为实参传递给另一个函数调用
        function showDelay(msg,time)
        {
            var timer=setTimeout
            (
                function()
                {
                    console.log(msg);
                },time
            );
        }
        showDelay("atguigu",2000);
        //此函数也存在闭包，外部函数的参数传递给了内部函数使用
    </script>
</head>
<body>
    <!--
        1.将函数作为另一个函数的返回值
        2.将函数作为实参传递给另一个函数调用
    -->
</body>
</html>